#define _CRT_SECURE_NO_WARNINGS
//#include"sort.h"
#include <unordered_map>
#include <iostream>
using namespace std;

//void TestInsertSoar()
//{
//	int a[] = { 9,1,2,5,7,4,8,6,3,5 };
//	InsertSort(a, sizeof(a) / sizeof(int));
//	PrintArray(a, sizeof(a) / sizeof(int));
//}
//void TestShellSort()
//{
//	int a[] = { 9,1,2,5,7,4,8,6,3,5 };
//	ShellSort(a, sizeof(a) / sizeof(int));
//	PrintArray(a, sizeof(a) / sizeof(int));
//}
//void TestQuitSort()
//{
//	int a[] = { 6,1,2,7,9,3,4,5,10,8 };
//	QuitSort1(a, 0,sizeof(a) / sizeof(int)-1);
//	PrintArray(a, sizeof(a) / sizeof(int));
//}

//int main()
//{
//	//TestInsertSoar();
//	//TestShellSort();
//	TestQuitSort();
//	return 0;
//}

//int lengthOfLongestSubstring(string s) {
//    unordered_map<char, int> map;
//    int size = 0;
//    int maxsize = 0;
//    for (int i = 0; i < s.size(); i++)
//    {
//        int begin = i;
//        while (begin < s.size())
//        {
//            if (!map.count(s[begin]))
//            {
//                map.insert(make_pair(s[begin], 1));
//                size++;
//                maxsize = max(size, maxsize);
//                begin++;
//            }
//            else
//            {
//                size = 0;
//                map.clear();
//                break;
//            }
//        }
//    }
//    return maxsize;
//}
//int main()
//{
//    /*string str = "pwwkew";
//    int s = lengthOfLongestSubstring(str);
//    cout << s << endl;*/
//    string str = "abcdef";
//    cout << str.size() << endl;
//    cout << strlen("abcdef") << endl;
//    cout << sizeof("abcdef") << endl;
//    return 0;
//}


//int subarraySum(vector<int>& nums, int k) {
//    int count = 0;
//    unordered_map<int, int> map;
//    map.insert(make_pair(0, 1));
//    int ptr = 0;
//    for (int i = 0; i < nums.size(); i++)
//    {
//        ptr += nums[i];
//        if (map.count(ptr - k))
//        {
//            count++;
//        }
//        if (map.count(ptr))
//        {
//            map[ptr]++;
//        }
//        else {
//            map.insert(make_pair(ptr, 1));
//        }
//    }
//    return count;
//}
//
//int main()
//{
//    vector<int> v = { 1,-1,0 };
//    int a = subarraySum(v, 0);
//
//	return 0;
//}

//#include <iostream>
//using namespace std;

//bool isPrime(int& n)
//{
//    for (int i = 2; i < n; i++)
//    {
//        if (n % i == 0)
//        {
//            return false;
//            break;
//        }
//    }
//    return true;
//}
//
//int main() {
//    int a = 2;
//    //cin >> a;
//    int count = 0;
//    for (int i = 2; i <= a; i++)
//    {
//        if (isPrime(i))
//        {
//            count++;
//        }
//    }
//    cout << count << endl;
//    char s[3][10] = { 'a' };
//    cout << s << endl;
//    cout << sizeof("abcd") << endl;
//    cout << strlen("abcd") << endl;
//    return 0;
//}

//bool canPermutePalindrome(string s) {
//    int table[256] = { 0 };
//    for (int i = 0; i < s.size(); i++) {
//        table[s[i]]++;
//    }
//    int count = 0;
//    for (int i = 0; i < 256; i++) {
//        if (table[i] % 2 == 1) {
//            count++;
//        }
//        if (count > 1) {
//            return false;
//        }
//    }
//    return true;
//};
//
//int main()
//{
//    string s = "abbvca";
//    bool a = canPermutePalindrome(s);
//    cout << a << endl;
//    return 0;
//}

#include <stdio.h>
#include <string.h>
//int main()
//{
//	char* str[3] = { "stra","strb","strc" };
//	char* p = str[0];
//	int i = 0;
//	while (i < 3)
//	{
//		printf("%s ", p++);
//		i++;
//	}
//	return 0;
//}

//int main()
//{
//	char p1[15] = "abcd", * p2 = "ABCD", str[50] = "xyz";
//	strcpy(str + 2, strcat(p1 + 2, p2 + 1));
//	printf("%s", str);
//	return 0;
//}

//char* f(char* str, char ch)
//{
//	char* it1 = str;
//	char* it2 = str;
//	while (*it2 != '\0')
//	{
//		while (*it2 == ch)
//		{
//			it2++;
//		}
//		*it1++ = *it2++;
//	}
//	return str;
//}
//int main() {
//	char a[10];
//	strcpy(a, "abcdcccd");
//	printf("%s", f(a, 'c'));
//	return 0;
//}

//string compressString(string S) {
//
//	int count = 0;
//	string ret;
//	for (int i = 0; i < S.size(); i++)
//	{
//		if (i + 1 < S.size() && S[i] == S[i + 1])
//		{
//			count++;
//			continue;
//		}
//
//		ret.push_back(S[i]);
//		ret.append(to_string(count));
//
//		count = 1;
//	}
//	return ret.size() <= S.size() ? ret : S;
//
//};